<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
  </head>
  <body></body>
  <script>
    /* 
        Map对象是一种键值对的集合，类似于对象，但是键的类型可以是任意值，值可以是任意类型。
    */
    /* 
        Map与Object的区别：
        1. Map的键可以是任意值，而Object的键只能是字符串或者Symbol。
        2. Map的键值对是有序的，而Object的键值对是无序的。

   */
    //    Map对象有以下几个方法：
    //     - set(key, value)：设置键值对
    //     - get(key)：获取指定键对应的值
    //     - has(key)：判断是否存在指定键
    //     - delete(key)：删除指定键
    //     - clear()：清空Map对象
    //     - size()：获取Map对象的长度
    //     - keys()：获取Map对象的键的Iterator对象
    //     - values()：获取Map对象的值的Iterator对象
    //     - entries()：获取Map对象的键值对的Iterator对象
    let obj = { a: 1, b: 2, c: 3 };
    let m1 = new Map([
      ["fds", "1ds"],
      [12, 34],
      [2, 3],
    ]);
    m1.set("@dfs@", "fsd1@#");
    m1.set(NaN, "fds@#");
    m1.set(obj, "fsqq123");
    console.log(m1.get("@dfs@"));
    m1.delete(NaN);
    console.log(m1);
    console.log(m1.size);
    let res = m1.keys();
    console.log(res, "res");
    let map = new Map();
    map.set(1, 2);
    map.set(3, 4);
    map.set("fd", 4);
    map.set(function () {}, 4);
    console.log(map.get(1)); // 2
    console.log(map.get(3)); //
    console.log(map);
  </script>
 
</html>
